/*
 * @Description:专门处理权限路由的模块
 * @Author: jun.wu
 * @Date: 2022-11-15 17:36:33
 * @LastEditors: jun.wu
 * @LastEditTime: 2022-11-16 16:39:37
 */
// vuex的权限模块
// asyncRoutes是所有的动态路由
import { constantRoutes, asyncRoutes } from "@/router";

const state = {
  //用户最初始拥有静态路由的权限
  routes: constantRoutes, //当前用户所拥有的所有路由的数组
};
const mutations = {
  // 定义修改routes的方法
  setRoutes(state, newRoutes) {
    // 每次都是在静态路由的基础上加
    state.routes = [...constantRoutes, ...newRoutes];
  },
};
const actions = {
  // 筛选权限路由
  // 第二个参数是用户所拥有的菜单权限
  filterRoutes(context, menus) {
    const routes = [];
    menus.forEach((key) => {
      routes.push(...asyncRoutes.filter((item) => item.name == key)); //得到一个数组，也可能是空数组
    });
    //得到的routes是所有模块中满足权限要求的数组
    context.commit("setRoutes", routes); //将动态路由提交给mutations，修改state数据的，显示左侧菜单用
    return routes; //return是给路由addRoutes用
  },
};
export default {
  namespaced: true,
  state,
  mutations,
  actions,
};
